package org.jsola.hr.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.entity.BaseDeleteDO;
import org.jsola.core.entity.Key;

import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.Map;

/**
 * 员工信息
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(name = "hr_emp_info")
@Key(UUID = true)
public class EmpInfoDO extends BaseDeleteDO<String> {

    private static final long serialVersionUID = 1L;

    /**
     * 员工参保状态 (0:未参保; 1:正常参保; 2:增员; 3:待增员; 4:减员; 5:待减员; 6:停保;)
     */
    private Integer empSocStatus;
    /**
     * 计划增员时间
     */
    private Date planIncreaseDate;
    /**
     * 计划停保时间
     */
    private Date planStopSocDate;
    /**
     * 参保时间
     */
    private Date socDate;
    /**
     * 停保时间
     */
    private Date stopSocDate;
    /**
     * 参保方案id
     */
    private String socProgId;
    /**
     * 封存时间
     */
    private Date sealedDate;
    /**
     * 本单位开始缴费时间
     */
    private Date companyBeginPayDate;
    /**
     * 增员月份
     */
    private String increaseDate;
    /**
     * 证件类型(默认居民身份证)
     */
    private Integer certificateType;
    /**
     * 国籍(地区), 默认中国
     */
    private String nationality;
    /**
     * 任职受雇从业类型(默认雇员)
     */
    private String employmentType;
    /**
     * 人员年龄
     */
    private Integer empAge;
    /**
     * 退休年龄
     */
    private Integer retirementAge;
    /**
     * 用户账号ID
     */
    private String userId;
    /**
     * 微信unionId
     */
    private String unionId;
    /**
     * 要入职的部门id(多个,分隔)
     */
    private String preJoinDep;
    /**
     * 要入职的岗位id(多个用,分隔)
     */
    private String preJoinPosition;
    /**
     * 工号
     */
    private String number;
    /**
     * 员工姓名
     */
    private String name;
    /**
     * 姓名的拼音
     */
    private String namePinyin;
    /**
     * 身份证号
     */
    private String idCard;
    /**
     * 民族
     */
    private String nation;
    /**
     * 出生日期
     */
    private String birthday;
    /**
     * 性别（1：男，2：女）
     */
    private Integer gender;
    /**
     * 签约主体
     */
    private String contractSubject;
    /**
     * 手机号
     */
    private String phone;
    /**
     * 个人邮箱
     */
    private String email;
    /**
     * 员工照片
     */
    private String empPhoto;
    /**
     * 学历（1：初中，2：高中，3：中专，4：大专，5：本科，6：硕士，7：博士，8：其他）
     */
    private String highestEducation;
    /**
     * 婚姻状况（1:已婚/2:未婚/3:离异）
     */
    private Integer maritalStatus;
    /**
     * 生育状况(1:已⽣育/2:未生育)
     */
    private Integer birthStatus;
    /**
     * 渠道id
     */
    private String channelId;
    /**
     * 政治面貌 (1:中共党员;2:共青团员;3:普通居民/群众;4:其它)
     */
    private Integer politicalStatus;
    /**
     * 入党时间
     */
    private Date partyDate;
    /**
     * 党组织关系所在地
     */
    private String partySite;
    /**
     * 籍贯
     */
    private String birthplace;
    /**
     * 户籍所在地
     */
    private String nativeLocation;
    /**
     * 户口类型（1：城镇户口，2：农村户口，3：居民户口）
     */
    private Integer regType;
    /**
     * 现居住地址ID
     */
    private String currentAddrId;
    /**
     * 现居住地址（详情）
     */
    private String currentLocation;
    /**
     * 公司id
     */
    private String companyId;
    /**
     * 银行卡号
     */
    private String bankCard;
    /**
     * 开户行
     */
    private String bankName;
    /**
     * 工资卡开户支行
     */
    private String bankCardBranch;
    /**
     * 开户地区ID
     */
    private String bankPlaceId;
    /**
     * 开户地区
     */
    private String bankPlace;
    /**
     * 是否有社保（0：无，1：有）
     */
    private Boolean socType;
    /**
     * 是否本地首次缴纳社保(0:不是;1:是)
     */
    private Boolean isFirstSoc;
    /**
     * 社保卡号
     */
    private String socCard;
    /**
     * 是否本地首次缴纳公积金(0:不是;1:是)
     */
    private Boolean isFirstPf;
    /**
     * 公积金账号
     */
    private String pfCard;
    /**
     * 健康状况
     */
    private String healthCondition;
    /**
     * 有无重大病史或遗传病(0:无,1:有)
     */
    private Boolean hasWeightyMedicalHis;
    /**
     * 职称
     */
    private String jobTitle;
    /**
     * 参加工作时间
     */
    private Date joinWorkDate;
    /**
     * 现工作单位名称
     */
    private String workingUnitName;
    /**
     * 普通话等级
     */
    private String putonghuaLevel;
    /**
     * 特长
     */
    private String speciality;
    /**
     * 获奖情况
     */
    private String prizeWinning;
    /**
     * 英语等级
     */
    private String englishLevel;
    /**
     * 计算机等级
     */
    private String ncreLevel;
    /**
     * 意向岗位
     */
    private String targetPost;
    /**
     * 附件_身份证（正反面）
     */
    private String annexIdCard;
    /**
     * 附件_户口本（首页、索引页、本人页）
     */
    private String annexHousehold;
    /**
     * 附件_毕业证
     */
    private String annexDiploma;
    /**
     * 附件_学位证
     */
    private String annexDegree;
    /**
     * 附件_执业资格证
     */
    private String annexPractising;
    /**
     * 附件_专业资格证
     */
    private String annexMajor;
    /**
     * 附件_奖励证明
     */
    private String annexReward;
    /**
     * 附件_无犯罪记录证明
     */
    private String annexNoCriminal;
    /**
     * 附件_一寸白底电子版照片
     */
    private String annexBlackWhitePhoto;
    /**
     * 附件_普通话等级证书
     */
    private String annexPthLevel;
    /**
     * 附件_英语等级证书
     */
    private String annexEnglishLevel;
    /**
     * 附件_计算机等级证书
     */
    private String annexNcreLevel;
    /**
     * 附件_机动车驾驶证
     */
    private String annexDrivingLicense;
    /**
     * 附件_个人证件照
     */
    private String annexPersonPhoto;
    /**
     * 附件_⼯资银⾏卡
     */
    private String annexSalaryCard;
    /**
     * 附件_社保卡
     */
    private String annexSocCard;
    /**
     * 附件_公积金卡
     */
    private String annexPfCard;
    /**
     * 附件_劳动合同
     */
    private String annexLaborContract;
    /**
     * 附件_⼊职简历
     */
    private String annexOnbResume;
    /**
     * 附件_⼊职体检单
     */
    private String annexOnbCheckup;
    /**
     * 附件_上家公司离职证明
     */
    private String annexLastLeaveCert;
    /**
     * 附件_⼯作申请表
     */
    private String annexWorkApply;
    /**
     * 附件_调薪通知单
     */
    private String annexAdjustNotice;
    /**
     * 附件_⼈事异动申请表
     */
    private String annexPersonalChange;
    /**
     * 附件_社会保险转移单
     */
    private String annexSocTransfer;
    /**
     * 附件_绩效考核结果报告
     */
    private String annexPerformanceReport;
    /**
     * 附件_员工其它资料
     */
    private String annexOtherInfos;
    /**
     * 附件_离职审批
     */
    private String annexLeaveAppro;
    /**
     * 附件_离职证明
     */
    private String annexLeaveCert;
    /**
     * 附件_离职申请表
     */
    private String annexLeaveApply;
    /**
     * 附件_⼯作交接表
     */
    private String annexHandoverTable;
    /**
     * 直属主管
     */
    private String supervisor;
    /**
     * 聘用形式（0：非正式，1：正式）
     */
    private Boolean employType;
    /**
     * 非正式类型（1：实习，2：劳务，3：雇佣，4：返聘，5：外包）
     */
    private Integer informalType;
    /**
     * 正式类型（1:试用期,2:已转正,0:无状态）
     */
    private Integer formalType;
    /**
     * 是否完善员工信息（0：没有，1：完善）
     */
    private Boolean isImprove;
    /**
     * 岗位类型( 1劳务派遣 2外包 3社保代缴 4薪资代发)
     */
    private Integer postType;
    /**
     * 合同状态（0：合同未发起，1：待员工签署，2：待公司签署，3：签署完成, -1 已过期）
     */
    private Integer contractsStatus;
    /**
     * 管理形式（0：总部，1：分城市，2：其他）
     */
    private Integer managerForm;
    /**
     * 工作城市ID
     */
    private String workCityId;
    /**
     * 身份证签发机关
     */
    private String issuedBy;
    /**
     * 身份证开始期限
     */
    private String cardStartDate;
    /**
     * 身份证结束期限
     */
    private String cardEndDate;
    /**
     * 工作地点
     */
    private String workCity;
    /**
     * 入职登记表状态（0：未提交，1：已提交）
     */
    private Boolean joinFormStatus;
    /**
     * 预计入职时间
     */
    private Date preJoinDate;
    /**
     * 入职时间
     */
    private Date joinDate;
    /**
     * 试用期（月）离职日期
     */
    private Integer probation;
    /**
     * 试用期天数
     */
    private Integer probationDays;
    /**
     * 转正时间
     */
    private Date turnStraightDate;
    /**
     * 离职时间
     */
    private Date leaveDate;
    /**
     * 离职原因
     */
    private String leaveReason;
    /**
     * 员工变动状态（0：当前无变动，1：转正中，2：调岗中，3： 离职中）
     */
    private Integer changeStatus;
    /**
     * 实名认证
     */
    private Boolean verified;
    /**
     * 员工状态（1：待入职，2：入职，3：待离职，4：离职）
     */
    private Integer status;
    /**
     * 审批状态（1：待审批，2：审批中，3：审批未通过，4：审批已通过，5：不需要审批）
     */
    private Integer approvalStatus;
    /**
     * 是否到岗; 1:已到岗 0:未到岗
     */
    private Boolean arrival;
    /**
     * 入职城市ID
     */
    private String joinCityCode;
    /**
     * 档案编号
     */
    private String archivesNumber;
    /**
     * 入职城市name
     */
    private String joinCityName;
    /**
     * 档案备注
     */
    private String archivesRemake;
    /**
     * 招聘渠道
     */
    private String recruitChannels;
    /**
     * 是否已退休（0：否，1：是）
     */
    private Boolean retirementStatus;
    /**
     * 退休日期
     */
    private Date retirementDate;
    /**
     * 退休备注
     */
    private String retirementRemark;
    /**
     * 血型(1:A;2:B;3:AB;4:O;5:其他)
     */
    private Integer bloodGroup;
    /**
     * 附件女职工未孕证明
     */
    private String annexNoPregnant;
    /**
     * 附件解除劳动关系证明
     */
    private String annexLeaving;
    /**
     * 薪资档案类型；0：未定薪 1：固定薪资档案 2：工价薪资档案
     */
    private Integer salaryType;
    /**
     * 支付宝账号
     */
    private String alipayAccount;
    /**
     * 薪资规则id
     */
    private String salaryRuleId;
    /**
     * 劳务费规则id
     */
    private String serviceFeeRuleId;
    /**
     * 备注
     */
    private String remark;
    /**
     * 标签
     */
    private String tag;


    /**
     * 员工基本工资
     */
    @Transient
    private Integer salaryBasic;

    /**
     * 员工公钥串
     */
    @Transient
    private String pubKey;

    /**
     * 部门名称
     */
    @Transient
    private String depName;

    /**
     * 岗位名称
     */
    @Transient
    private String positionName;

    /**
     * 合同类型
     */
    @Transient
    private String contractType;

    /**
     * 合同开始时间
     */
    @Transient
    private Date contractStartDate;

    /**
     * 合同结束时间
     */
    @Transient
    private Date contractEndDate;

    /**
     * 合同期限
     */
    @Transient
    private Integer contractExpire;

    /**
     * 合同期限字符串
     */
    @Transient
    private String contractExpireStr;

    /**
     * 学历
     */
    @Transient
    private String education;

    /**
     * 纸质/电子合同
     */
    @Transient
    private String empContractType;

    /**
     * 纸质/电子合同
     */
    @Transient
    private String fileTypeValue;

    /**
     * 合同备注
     */
    @Transient
    private String contractsRemark;

    /**
     * 合同编号
     */
    @Transient
    private String contractsName;

    /**
     * 合同编号
     */
    @Transient
    private String contractsNumber;

    /**
     * 公司名称
     */
    @Transient
    private String companyName;

    /**
     * 合同签订日期
     */
    @Transient
    private Date subscribeTime;

    /**
     * 导入的自定义字段
     */
    @Transient
    private Map<String, String> fieldNameMap;

    /**
     * 纸质合同的合同状态
     */
    @Transient
    private Integer paperContractsStatus;

    /**
     * 【员工家庭成员】
     */
    @Transient
    private String familyName;

    @Transient
    private String familyRelation;

    @Transient
    private String familyPhone;

    @Transient
    private String familyWorkUnit;

    /**
     * 【员工联系人】
     */
    @Transient
    private String contactName;

    @Transient
    private String contactRelation;

    @Transient
    private String contactPhone;

    @Transient
    private String contactAddress;

}

